package com.kevinkk.tree;

/**
 * 给你一个二叉搜索树的根节点 root ，返回 树中任意两不同节点值之间的最小差值 。
 * 差值是一个正数，其数值等于两值之差的绝对值。
 *
 * BST 的差值 就是 中序遍历的过程中，当前节点和前序节点的差
 * 完全中序遍历一遍，就能得到最小的差值
 */

public class MinimumAbsoluteDifferenceInBST {
    class Solution {
        TreeNode pre = null;
        int res = Integer.MAX_VALUE;
        public int getMinimumDifference(TreeNode root) {
            traversal(root);
            return res;
        }

        private void traversal(TreeNode root){
            if(root == null) return;
            traversal(root.left);
            if(pre != null)
                res = Math.min(res, root.val - pre.val);
            pre = root;
            traversal(root.right);
        }
    }
}
